home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / TECHNICA / COMPUTER / 3497.ZIP / EEDRAW24.ZIP / EEDRAW.DOC < prev    next >
Text File  |  1992-11-24  |  53KB  |  1,090 lines

  1.  
  2.  
  3.                                  EEDRAW
  4.  
  5.                                User Guide
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26. EEdraw Manual For Version 2.4, 
  27. Gershon Elber & Peter Cooper 
  28.            EEDRAW - Electrical Engineering Drawings (ver 2.4)
  29.  
  30.  
  31.  
  32.  
  33.  
  34.      BECAUSE EEDRAW/EED-PS/EEDEPSON ARE LICENSED FREE OF CHARGE, I
  35.      PROVIDE ABSOLUTELY NO WARRANTY, TO THE EXTENT PERMITTED BY
  36.      APPLICABLE STATE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING, I
  37.      GERSHON ELBER PROVIDE EEDRAW/EED-PS/EEDEPSON PROGRAMS "AS IS"
  38.      WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
  39.      INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  40.      MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
  41.      RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
  42.      SHOULD THE EEDRAW/EED-PS/EEDEPSON PROGRAMS PROVE DEFECTIVE, YOU
  43.      ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  44.      IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL GERSHON ELBER,
  45.      BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY LOST PROFITS, LOST
  46.      MONIES,OR OTHER SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES
  47.      ARISING OUT OF THE USE OR INABILITY TO USE (INCLUDING BUT NOT LIMITED
  48.      TO LOSS OF DATA OR A FAILURE OF THE PROGRAM TO OPERATE WITH
  49.      PROGRAMS NOT DISTRIBUTED BY GERSHON ELBER) THE PROGRAM, EVEN IF
  50.      YOU HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR FOR
  51.      ANY CLAIM BY ANY OTHER PARTY.
  52.  
  53. 1. INTRODUCTION
  54.  
  55.  
  56. EEDraw is a simple parametric drawing program, specifically designed for EE
  57. (Electrical Engineering) type of drawing. The program fully allows new parametric
  58. types, through library mechanisms, and in fact all the EE types are defined this way.
  59. This library mechanism is extremely useful in defining new types and can be used for
  60. other applications other than EE.
  61.  
  62. The following graphic devices are supported for display: Hercules, CGA, ATT, EGA,
  63. VGA and SVGA (through user provided BGI driver). The following printing devices are
  64. supported (via the printing drivers): EPSON compatible printers (8 pins), PostScript
  65. printers. 
  66.  
  67. Usage: EEDraw [-z] *[FileName[.EED]]
  68.  
  69. Options: [-z] Print version number and usage.
  70.  
  71. Quick start:
  72. The program comes with quite common setup. If you have a mouse and a
  73. VGA/EGA/Hercules/CGA then you can simply start eedraw. Typing 'eedraw
  74. 82720-1.eed 82720-2.eed' will restart eedraw and prompt you for two windows for the
  75. above two files. Click on left button (return on keyboard) to pick window corners.
  76. Click on right button (space bar on keyboard) if you want to default size (maximum
  77. size). Alt-Q, by default, will take you out.
  78.  
  79. From version 2.4 onwards a layer structure has been implemented, this will enable the
  80. user to display only the information on the screen they want, also in adding new
  81. layers of there own further detail and notes can be added to a drawing. Hard copy of
  82. drawings show only the layers that were turned on when the drawing was last saved,
  83. all other information is hidden from the printed output.
  84.  
  85.  
  86.  
  87. 2. INSTALLATION
  88.  
  89.  For correct execution of the main program (EEDraw), the following files must exist
  90. in one of the path directories: 
  91.  
  92.      1. EEDraw.exe
  93.      2. EEDraw.cfg
  94.      3. EEDraw.bnd
  95.      4. EEDraw.hlp
  96.      5. *.lib
  97.  
  98. For correct execution of the printer drivers (EED-PS, EED-Epsn), the following files
  99. must exists in one of the path directories (see also Appendix B):
  100.  
  101.      1. EED-PS.exe                  1. EED-Epsn.exe
  102.      2. EED-PS.cfg                  2. EED-Epsn.cfg
  103.      3. *.lib                       3. *.lib
  104.  
  105. The library files (*.lib) are the same for the printer drivers and eedraw itself and
  106. should exist probably only once. See SETUP below shows how to change the setup of
  107. this programs. The default values should be enough to start and learn this program. 
  108.  
  109. 3. SETUP
  110.  
  111.  
  112. EEDraw set up is done through two files: EEDraw.cfg and EEDraw.bnd.
  113.  
  114. EEDraw.cfg
  115.  
  116.  
  117. This files contain global parameters that should be selected and set only once, in final
  118. installation stage. Empty lines or anything after a semicolon (';') is ignored. This file
  119. is read once when eedraw is being started. Parameters that can be set are:
  120.  
  121. 1. AutoPan -        Boolean flag. If TRUE, any operation involves in the drawing 
  122.                     space (such as move, copy or draw) will auto-pan if cursor
  123.                     exists screen.  If FALSE, Panning option must be used
  124.                     manually to perform this operation.  This Boolean flag can be
  125.                     set from the Status main menu.
  126.        For example:
  127.        AutoPan TRUE
  128. 2. WindowName -        Boolean flag. If TRUE each EEDraw data file name is printed 
  129.                        in the head of the window. If FALSE no name is printed and
  130.                        this makes some  more space for the drawing itself.  This
  131.                        Boolean flag can be set from the Window main menu.
  132.        For example:
  133.        WindowName TRUE
  134. 3. ATKeyboard -        Boolean flag. If TRUE, it is assumed AT style keyboard bios 
  135.                        calls (also known as Enhanced keyboard - if you have F11/F12
  136.                        on your  keyboard, good chance you can set this to TRUE).
  137.                        This will enable using  more complex scan codes, not
  138.                        supported by regular keyboard (such as  F11/F12). Note
  139.                        however it may HANG your system if it is not so.
  140.       For example:
  141.       ATKeyboard FALSE
  142. 4. MouseSensitivity -  Integer flag. Default is set to 10 which is a good  start. Making
  143.                        this number bigger makes the mouse less sensitive.
  144.       For example
  145.       MouseSensitivity 10
  146. 5. HVLines -           Boolean flag. If TRUE, lines are coerced to be vertical or 
  147.                        horizontal only. This Boolean flag can be set from the Status
  148.                        main menu.
  149.       For example
  150.       HVLines TRUE
  151. 6. SnapDistance -      Integer value. Sets the distance in drawing space of   points 
  152.                        to be snapped. You probably do not want to change this,
  153.                        especially not in  the middle of a drawing. This Integer value
  154.                        can be set from Status main  menu.
  155.       For example:
  156.       SnapDistance 16
  157. 7. Allow256Colors -    Boolean flag. 256 colours BGI drivers will have a richer  set of
  158.                        colours. If FALSE such a driver will be forced to use only 16
  159.                        colours  effectively having same colours are EGA or VGA
  160.                        default colours   (EGAVGA.BGI).
  161.       For example:
  162.       Allow256Colors FALSE
  163. 8. AllowAsyncEvents -  Boolean flag. The user interface supports async event 
  164.                        handling. This means that one can pop up something while
  165.                        something else  is being popped up already for example. This
  166.                        has the advantage of the  ability to arbitrary "jump" between
  167.                        commands. However this may be VERY  confusing as well.
  168.                        Leave it FALSE at least at the beginning!
  169.       For example:
  170.       AllowAsyncEvents FALSE
  171.  
  172. 9. SaveBackMethod -    Integer. Underlaying windows are being saved for short  life
  173.                        time pop up items such as queries. This integer selects where
  174.                        to  save this data.
  175.       Options are:
  176.       1 - Conventional memory.     This obviously reduces the amount of memory  for
  177.                                    the EE drawings themselves.
  178.       2 - Expanded memory.
  179.       3 - XMS Extended memory      (currently not supported).
  180.       4 - Disk file.               For reasonable response this better be a ram disk.
  181.                                    See also SaveBackPath below.  The device, this
  182.                                    data is saved into, should be able to hold ~100k
  183.                                    for  16 colours BGI drivers and twice that for 256
  184.                                    colours BGI drivers.
  185.       For example:
  186.       SaveBackMethod 1
  187. 10. SaveBackPath -     String. This string specifies where back windows should  be
  188.                        saved. This full path should have a postfix '\' in it.
  189.       For example:
  190.       SaveBackPath "f:\temp\"
  191. 11. Mouse -            Boolean flag. Inform the system if a Mouse exists or not.  If
  192.                        this is commented out, auto detection will be used.
  193.       For example:
  194.       Mouse TRUE
  195. 12. Joystick -         Boolean flag. Inform the system if a joystick exists or not. 
  196.                        Must be TRUE for a joystick to be used. Personally the
  197.                        joystick was not  found accurate enough for this type of
  198.                        drawing.
  199.       For Example:
  200.       Joystick FALSE
  201. 13. BGIDriverPath -    specifies where to look for the *.BGI drivers. Note the  drivers
  202.                        are supplied with this program (type 'dir *.bgi') and you should 
  203.                        update this path to the exact place you had moved them.
  204.       For example:
  205.       BGIDriverPath "C:/TC/BGI/ATI"
  206. 14. GraphDriver -      Set what type of display device to use. The relative driver 
  207.                        *.BGI are looked in the directory specified in BGIDriverPath
  208.                        above.  The following values are valid (same as TC 2.0/TC++
  209.                        1.0 graphics.h file  if that helps):
  210.  
  211.       0      -     Auto detect (default, so you can delete this one...)
  212.       1      -     CGA (Hires two colours mode)
  213.       3      -     EGA
  214.       4      -     EGA64
  215.       5      -     EGAMONO
  216.       7      -     Hercules
  217.       8      -     ATT (Not tested)
  218.       9      -     VGA
  219.       999    -     SVGA (super VGA - see SVGANameMode below)
  220.       For example:
  221.       GraphDriver 999
  222.  
  223. 15. SVGANameMode -     select a BGI driver to use. This driver is searched for   only  if
  224.                        GraphDriver above is set to 999. Thus driver is assumed to be
  225.                        800 by  600 in resolution but any driver with 4:3 aspect ratio
  226.                        will probably be  o.k.. This driver is searched in the directory
  227.                        specified by BGIDriverPath  above. For example if the driver
  228.                        you want to use is ATI.BGI and in mode 2:
  229.       SVGANameMode "ATI.2"
  230. 16. Libraries -        String value. A list of libraries (neither file type, nor  full  path
  231.                        is required - only the name) to automatically load on restart, 
  232.                        separated with commas (','). Libraries can also be loaded using
  233.                        the libs  main menu, and/or will be automatically loaded when
  234.                        a data file needs  them.
  235.       For example:
  236.       Libraries "TTL4LS,EPROM,GENERAL,LINEAR"
  237. 17. LibrariesPath -    String Value. Full path where libraries from  LoadLibByName
  238.                        should be searched for. Note libraries loaded automatically 
  239.                        will be searched in all path dirs and specified by PATH env.
  240.                        variable.
  241. 18. FrameWidth -       Integer value. Sets the border width for all windows.
  242. 19. Colours control.   Below are all colours values to select. Each can be one of the
  243.                        following 8 colours:
  244.        0 - WHITE
  245.        1 - BLACK
  246.        2 - RED
  247.        3 - GREEN
  248.        4 - BLUE
  249.        5 - YELLOW
  250.        6 - CYAN
  251.        7 - MAGENTA
  252.                        The colours are self explanatory and grouped into the
  253.                        following groups:  Root controls colours of the back ground
  254.                        root window. Actv sets the active  drawing window colours.
  255.                        Psv sets the passive window(s) colours. PopUp  controls all pop
  256.                        ups like queries colours. Highlight sets the highlight  objects
  257.                        colour. Below are the colour groups themselves.
  258.  
  259.        ;Root window - the background.
  260.        RootFrameolor         7
  261.        RootForeColor         3
  262.        RootBackColor         5
  263.        RootXorColor          6
  264.  
  265.        ;Pop up menus/queries.
  266.        PopUpFrameColor       2
  267.        PopUpForeColor        5
  268.        PopUpBackColor        5
  269.        PopUpXorColor         6
  270.  
  271.        ;The currently active file/window if any.
  272.        ActvFrameColor        2
  273.        ActvForeColor         5
  274.        ActvBackColor         4
  275.  
  276.        ;All other passive files/windows if any.
  277.        PsvFrameColor         3
  278.        PsvForeColor          5
  279.        PsvBackColor          4
  280.  
  281.        ;High light colour - selected items.
  282.        HighLightColor        2
  283.  
  284.  
  285. Following is the primary system layer colours,the program has upto 45 layers
  286. available to the user with several of them preset, The numeric representation for
  287. these layers is given at the end of this manual.
  288.  
  289.        LayerWire             0
  290.        LayerBus              5
  291.        LayerGate             3
  292.        LayerIEEE             2
  293.        LayerPinFun           4
  294.        LayerPinNum           4
  295.        LayerPinNam           4
  296.        LayerRefDes           2
  297.        LayerAttr             6
  298.        LayerDevice           7
  299.        LayerNotes            6
  300.        LayerNetNam           3
  301.        LayerPin              3
  302.  
  303. If this configuration file is not found in any of the path directories, a message is
  304. printed to the screen, and internal defaults will be used instead. This is NOT
  305. recommended - fix that as soon as you can, as the internal defaults are not guaranteed
  306. to be anything specific.
  307.  
  308. EEDraw.bnd
  309.  
  310.  
  311. This file allows you to bind any of the program internal functions (as can be selected
  312. from any of the menus) to a specific key. Note some keys are hard-bound and can not
  313. be used to rebind function (such as arrow keys - see Functionality below). The format
  314. of the file is following. Empty lines, or lines begin with a semicolon (';') are ignored.
  315. Every line consists of three items: "FunctionName KeyName ScanCode" separated by
  316. white spaces. FunctionName are the fixed names this program supports (see blow).
  317. KeyName is the name of the key ("AltK" for example) this FunctionName will be bound
  318. to. Up to 4 characters are allowed for KeyName, and this name will appear in the main
  319. menu which contains this function. ScanCode is the scan code of the bounded key.
  320. If the key is regular ascii code, this ascii code is the scan code. If it is extended code
  321. (such as F? keys are), add 256 to this value. All numbers should be in decimal.
  322. Currently available FunctionName(s) and their associated main menu (see
  323. Functionality section below for their description):
  324.  
  325.  
  326.  
  327.       File menu:
  328.              LoadEEDFile
  329.              NewEEDFile
  330.              SaveAllEED
  331.              SaveEEDFile
  332.              SaveEEDAsOld
  333.              SaveEEDAsNew
  334.              SaveNetList
  335.              CloseEEDFile
  336.              ClearAll
  337.              Directory
  338.              ChangeDir
  339.              ShellToDos
  340.              ExitEEdraw
  341.  
  342.       Window menu:
  343.             PopWindow
  344.             PushWindow
  345.             MoveWindow
  346.             ResizeWindow
  347.             FullSize
  348.             ShowName
  349.             MakeActive
  350.             NameActive
  351.             PanWindowLeft
  352.             PanWindowRight
  353.             PanWindowUp
  354.             PanWindowDown
  355.  
  356.       Display menu:
  357.             ZoomOut
  358.             ZoomIn
  359.             ZoomReset
  360.             RedrawAll
  361.  
  362.       Libs menu:
  363.             LoadLibrary
  364.             LoadLibByName
  365.             FreeLibrary
  366.             ViewLibrary
  367.             DirLibrary
  368.             ChDirLibrary
  369.  
  370.       Draw menu:
  371.             DrawLine
  372.             DrawBus
  373.             DrawConnect
  374.             DrawText
  375.             DrawLibItem
  376.             ChangeLayer
  377.             TglOneColor
  378.             SetOneColor
  379.  
  380.       Modify menu:
  381.             ModifyMove
  382.             ModifyCopy
  383.             EditLibItem
  384.             ModifyDelete
  385.             ModifyUnDel
  386.             ModifyCut
  387.             ModifyPaste
  388.             ModifyDrop
  389.  
  390.       Status menu:
  391.             Help
  392.             GetMemoryFree
  393.             GetZoomFactor
  394.             SetDrawText
  395.             SetTextSize
  396.             SetHVLines
  397.             SetSnapFactor
  398.             SetLineWidth
  399.  
  400.       Other (not in any menu):
  401.             SameAgain
  402.  
  403. 4. Functionality
  404.  
  405.  
  406. This section describes the currently available function set, and main modes. Although
  407. most of the keys may be bound to any function as described in the Setup section
  408. (EEDraw.bnd description), some of them are hard-bound and should not be used. Note
  409. that in order for enhanced Keyboard scan codes to be used, such as F11 and F12,
  410. 'ATKeyboard' must be set to TRUE in eedraw.cfg file. See 'Mouse' and 'Joystick' in
  411. eedraw.cfg for mouse and joystick setup. Below are the "hard-bound" keys: 
  412.  
  413. A.    All the numeric keypad (arrow keys, home, PhUp, End, PgDn). These keys  are
  414.       used to move to cursor (even if mouse exists).
  415. B.    All the numeric keys but 0 (used by shift-arrows).
  416. C.    Enter (or Return) key. this is the SELECT key.
  417. D.    Space bar. This is the ABORT key.
  418. E.    Tab. This is equivalent to MIDDLE button key.
  419.  
  420. The arrow keys are used to move the cursor (co-exist with mouse), and if shifted,
  421. move cursor faster. In addition to the cursor movement, three important keys are
  422. defined as well:
  423.  
  424.  
  425. A.    SELECT key, hard-bound to the Enter (or Return), left button on mouse,  if such
  426.       exists, and button 1 on the joystick, if exists.
  427. B.    ABORT key, hard-bound to the Space bar, right button on mouse if such  exists,
  428.       and button 2 on the joystick, if exists.
  429. C.    MIDDLE key, hard-bound to the Tab, middle button on mouse if such  exists (or
  430.       pressing both mouse buttons), and both buttons on the joystick. All the eedraw
  431.       functions described below uses these hard-bound keys.
  432.  
  433. This version supports multi file editing via multi window system (running on regular
  434. DOS). Each time a file is being open, a new window is created for it. If window header
  435. is to be shown (see ShowName function below) the file name the window is associated
  436. with is displayed, in addition to its current drawing layer, and the status information.
  437. The status is shown on the right hand side of the title bar, displaying the current
  438. windows drawing modes and attributes. Below is a representation of the status
  439. elements:
  440.  
  441.  
  442.      File Mode     Line Drawing       Snap         Line Width     Single Colour
  443.  
  444.       File Mode:
  445.             O)riginal  -           this file is exactly the same as first loaded in.
  446.             M)odified  -           the current file state should be saved. Data has
  447.                                    been modified.
  448.  
  449.       Line Drawing:
  450.             O)rthoganal      -           Lines only either vertical or horizontal
  451.             A)ngular   -           Lines can be drawn in any direction
  452.  
  453.       Snap:
  454.                                    This gives a numeric display of the current snap
  455.                                    radius 
  456.  
  457.       Line Width: 
  458.                                    This shows the current line drawing width in use
  459.  
  460.  
  461.       Single Colour:
  462.             S)ingle    -           All the layers which are turned on are displayed in
  463.                                    a single colour.
  464.             N)ormal    -           All the layers which are turned on are displayed in
  465.                                    the native colour.
  466.  
  467. There is no limit on the number of windows/files that may be open at once, aside
  468. from DOS and memory limits. The libraries are being shared between all files, so
  469. reduce memory usage. This means that even if two (or more) files needs LINEAR.LIB
  470. it will be loaded once into memory. However, there is no way for the program to
  471. detect which file uses which library when they are being saved and it is assumed ALL
  472. libraries currently loaded are being used by all files.
  473.  
  474. Few type of interactors are defined to query the user:
  475.  
  476.       A.    Yes/No question - prompt the question, with Yes and No buttons. The
  477.             SELECT key will select the answer. ABORT key is ignored. One may use
  478.             the Y/N keys as well to signal Yes/No answer.
  479.       B.    Continue question - prompt a message, and wait for SELECT on the
  480.             continue button. ABORT key is ignored. One may use the C key to
  481.             continue as well.
  482.       C.    String question - prompt a message, and waits for string input. This
  483.             facilitates a full line editor as follows (independent of key bindings): *
  484.             Right and Left arrows will move right and left. Insert toggles
  485.             Insert/Overwrite modes (toggles cursor shape). Delete deletes current
  486.             character. * Backspace deletes character to the back. Home and End will
  487.             move to beginning/end of string respectively. Esc clears the current
  488.             string. Return will terminate editing.
  489.       D.    List question - prompt with a list of items (files names for example). An
  490.             item will be picked by the SELECT key if applicative (when viewing a
  491.             directory nothing needs to be picked). ABORT key will usually abort the
  492.             operation, but may have some special operation as well or may be ignored.
  493.       E.    Menu(s) question. Two types of menus are used - top down from the
  494.             mainmenu, and pop up on special occasions. Menus behave very much
  495.             like List questions. SELECT key selects menu item while ABORT key
  496.             usually abort the menu with no selection at all.
  497.  
  498. A. File menu:
  499.  LoadEEDFile      -    Prompts for a file name (List question), and reads it from the
  500.                        current directory, if SELECT key, abort if ABORT key. Note
  501.                        file type must be '.eed'. A new window is created for it while
  502.                        the user is prompted to set the window size (see
  503.                        ResizeWindow).
  504.  NewEEDFile       -    Creates a new drawing window not assosicated with any file.
  505.                        This is the way to create new drawings. The user is prompted
  506.                        to set the window size (see ResizeWindow).
  507.  SaveAllEED       -    Saves all unsaved drawings. This is probably useful before
  508.                        quitting eedraw.
  509.  SaveEEDFile      -    Saves currently edited file. This routine can be used only after
  510.                        a new file was saved at list once, or it was loaded. In both
  511.                        cases, it will be saved on the same name, after renaming old
  512.                        one to have '.bak' extension. Ask for verification (Yes/No
  513.                        question).
  514.  
  515.  SaveEEDAsOld     -    Same as SaveEEDFile, but prompts with list of all '.eed' files
  516.                        in current directory, and saved by the name selected  if
  517.                        SELECT key, or abort if ABORT key.
  518.  SaveEEDAsNew     -    Same as SaveEEDFile, but prompts for a new file using String
  519.                        question.
  520.  
  521.  SaveNetList      -    Saves a net list for the active window. Default name is same
  522.                        as '.eed' but with '.net' type. Net list is generated by scanning
  523.                        the line and bus object in the drawing. A drawing should be
  524.                        designed ahead of time so the net list will be correct in two
  525.                        respects:
  526.       1.    The net list can not identify individual pins in a BUS and  will list them
  527.             all as one (BUS) connection. Therefore  bus lines should be made
  528.             individually if this program is  to make a full net list for it.
  529.       2.    Since only lines and buses are scanned, library items  connected directly
  530.             connection will not be detected. An  easy solution is to put a dummy line
  531.             connection there so  that connection will be scanned correctly. When the
  532.             net list is generated the scanned lines/buses are highlighted so the
  533.             remaining non scanned ones can be easily viewed.
  534.  
  535.  CloseEEDFile     -    Closes a drawing window associated with a file. Note that non
  536.                        of the above saving functions close the window, and this
  537.                        function is the only way to close a window. Ask for
  538.                        verification if data modified (Yes/No question).
  539.  ClearAll         -    Clears all eedrawing data in a picked window. The user is
  540.                        requested to "click" on the window to clear. Ask for
  541.                        verification (Yes/No question).
  542.  
  543.  
  544.  Directory        -    Display content of current directory as in List question. both
  545.                        SELECT key and ABORT key can be used to exit this mode.
  546.                        Unlike LoadEEDFile, all files are displayed.
  547.  ChangeDir        -    Prompts with String question for a new directory. Old
  548.                        directory is provided to begin with.
  549.  ShellToDos       -    "Fork"s (I wish this was true...) to the DOS O.S. . Type 'exit' at
  550.                        the DOS prompt to return to EEDraw.
  551.  ExitEEdraw       -    Exits the Program. Ask for verification (Yes/No question) and
  552.                        issue a warning if not all files were saved.
  553.  
  554. B. Window menu:
  555.  PopWindow        -    Pops up a window the user picks. The window is being picked
  556.                        by "clicking" on it. ABORT key aborts this operation.
  557.  PushWindow       -    Pushes down a window the user picks. The window is being
  558.                        picked by "clicking" on it. ABORT key aborts this operation.
  559.  MoveWindow       -    Moves a window the user picks. The window is being picked by
  560.                        "clicking" on it. ABORT key aborts this operation. The picked
  561.                        window frame is popped up so current position is all visible.
  562.                        The cursor prompt changes to a box in the window size that
  563.                        the user needs to place as the new position.
  564.  ResizeWindow     -    Same as MoveWindow but for resizing the window.
  565.  FullSize         -    Blows up a window the user picks. The window is being picked
  566.                        by "clicking" on it. ABORT key aborts this operation. This
  567.                        make the window as big as possible in the current display
  568.                        device. Calling this function again on the window will recover
  569.                        its original size. This function may be activated on drawing
  570.                        windows only. 
  571.  
  572.  ShowName         -    A toggle to show/hide window name. The window name is
  573.                        simply the filename the window is associated with. Also
  574.                        displayed is the current status of the drawing window, for the
  575.                        status codes, see earlier in this manual.
  576.  MakeActive       -    All drawing operations are performed on the active window. If
  577.                        only one drawing window exists it is the active one. If more,
  578.                        exactly one of them is the active one. This function selects
  579.                        the active window by a user pick. The window is being picked
  580.                        by "clicking" on it. ABORT key aborts this operation.
  581.  NameActive       -    All drawing operations are performed on the active window. If
  582.                        only one drawing window exists it is the active one. If more,
  583.                        exactly one of them is the active one. This function selects
  584.                        the active window by name. A list query of all drawing window
  585.                        (file) names is being popped up and the selected becomes the
  586.                        active one.
  587.  PanWindowLeft         -     Pan the ACTIVE window a half window to the left.
  588.  PanWindowRight        -     Pan the ACTIVE window a half window to the right.
  589.  PanWindowUp           -     Pan the ACTIVE window a half window up.
  590.  PanWindowDown         -     Pan the ACTIVE window a half window down.
  591.  
  592. C. Display menu:
  593.  ZoomOut          -    Zoom out (center of screen remains at center) by factor of 2.
  594.                        Note that if you zoom out from regular zoom factor, text will
  595.                        disappear as it can not be shrinked. You can enable text from
  596.                        the Status menu manually.
  597.  ZoomIn           -    Zoom in (center of screen remains at center) by factor of 2. 
  598.                        ZoomReset - Reset Zoom value to the regular zoom factor.
  599.  RedrawAll        -    Redraw all screen.
  600.  
  601.  
  602.  
  603.  
  604.  
  605. D. Libs menu:
  606.  
  607.  LoadLibrary      -    Prompts for a file name (List question), and reads it from the
  608.                        library directory, if SELECT key, abort if ABORT key. Note file
  609.                        type must be '.lib'.
  610.  LoadLibByName    -    Loads one or several libraries (separated by commas) by
  611.                        providing their names. To load EPROM.LIB and LINEAR.LIB
  612.                        "eprom,linear" should be typed. Libraries are been search in all
  613.                        directories as specified by the PATH environment variable.
  614.  FreeLibrary      -    Prompts with all loaded libraries with List question, and frees
  615.                        the selected one if SELECT key, abort if ABORT.
  616.  ViewLibrary      -    Prompts with all loaded libraries with List question, If a library
  617.                        has been selected via SELECT key, prompt with all parts
  618.                        defined in this library again with a List question. Selection of
  619.                        a part with SELECT key will display it. ABORT will go back to
  620.                        library List question, which can be aborted again via the
  621.                        ABORT key.
  622.  DirLibrary       -    Displays content of library directory library files (those with
  623.                        '.lib' extension) as in List question. Both SELECT key and
  624.                        ABORT key can be used to exit this mode.
  625.  
  626.  ChDirLibrary     -    Prompts with String question for a new directory for library
  627.                        search. Old directory is provided to begin with. This directory
  628.                        is used for Load/DirLibrary routines above only.
  629.                        LoadLibByName and auto library loading upon eedraw file
  630.                        loading will search all directories as specified by the PATH
  631.                        environment variable.
  632.  
  633.  
  634.  
  635. E. Draw menu:
  636.  DrawLine         -    Enters drawing mode. If HVLines is set (see SETUP,
  637.                        EEDraw.cfg section), only horizontal/vertical lines are
  638.                        allowed. In this mode, pressing SELECT key will insert a new
  639.                        point in the created polyline and pressing ABORT will delete
  640.                        the last entered point. If however, there are no points at all in
  641.                        the current polyline, ABORT key will abort this mode. Also,
  642.                        pressing SELECT twice (at the SAME place as the last point
  643.                        entered) will complete the drawn polyline. MIDDLE key will
  644.                        also complete the line drawing.
  645.  DrawWire         -    Same functionality as above, but forces the drawing layer to
  646.                        the 'Wire' layer, wether it is enabled or not. Once the line is
  647.                        entered, the current layer is returned.
  648.  DrawBus          -    Same as DrawLine, but draw thicker lines.
  649.  DrawConnect      -    Draw a connection junction, if SELECT key is pressed, or
  650.                        abort if ABORT key is pressed.
  651.  DrawText         -    Prompts for a string with String question, and then position
  652.                        the text horizontally or vertically. If the positioning is
  653.                        terminated with ABORT it is ignored, SELECT will update.
  654.  
  655.  
  656.  DrawLibItem      -    Prompts for a part name with String question. If this is not
  657.                        the first invocation to this mode, last part will be used as
  658.                        default string (remember you can always use Esc to clear to a
  659.                        fresh line). If part is found (name is exactly the same as shown
  660.                        in the ViewLibrary function above), a pop up menu will allow
  661.                        to rotate it 90 degree CW or CCW or mirror it. Successive
  662.                        SELECT will transform the library item to the desired
  663.                        orientation, while ABORT will abort this DrawLibItem mode.
  664.                        SELECT PlaceIt (top menu entry) will allow to position the
  665.                        part in the exact place. The user is also being prompted for
  666.                        Chip (i.e. 74LS00) and Part (i.e. IC7) names if they are
  667.                        required/allowed (see Appendix on library file definition) for
  668.                        this part. These are positioned similar to the way DrawText
  669.                        position its text, except that Chip name is already known and
  670.                        can not be modified.
  671.  ChangeLayer      -    Prompts the user to either change the mode, name or colour
  672.                        of an already defined layer, else add a new layer to the data
  673.                        base. The first menu presented to the user is a list of all the
  674.                        currently defined layers, also two extra entries 'Quit' and
  675.                        'NewLayer', this selection list works like all other long lists in
  676.                        EEDraw, if there are more entries than screen space the list
  677.                        can be scrolled up, by using the scroll bar on the right hand
  678.                        side of the list. If a currently defined layer is selected the user
  679.                        is presented with a sub menu to change the layer settings,
  680.                        These changes are: Display mode, Display Colour, Layer Name,
  681.                        and SetUsable, the last option is a quick method of setting a
  682.                        selected layer both usable for drawing, and active.
  683.                        If 'NewLayer' is selected the user is lead through a series of
  684.                        system prompts to setup a new layer, this process is straight
  685.                        forward, at any point in either layer create, or modify the
  686.                        ABORT function will take the user back one menu level.
  687.  TglOneColor      -    This function will take all the displayable layers to one colour,
  688.                        which is defined with the next function. All primary layer
  689.                        control is retained, where only layers which are turned on or
  690.                        usable are displayed.
  691.  SetOneColor      -    Prompts the user to select the 'OneColor' display colour, care
  692.                        should be taken not to set this colour to any which is
  693.                        unusable!
  694.  
  695.  
  696.  
  697. F. Modify menu:
  698.  
  699. This menu is heavily based on Picking objects. a single object is  being picked if the
  700. cursor is on an object. The cursor is considered on an object if one of the following: 
  701.  
  702.       A.    Line and Bus items: the cursor is on one of the Line/Bus end points (any
  703.             point that was set by SELECT when it was created, including internal
  704.             points).
  705.       B.    Connect item: the cursor is on the Connect center.
  706.       C.    Text item: the cursor is inside the smallest axes parallel bounding box
  707.             holding this text.
  708.       D.    Library item: the cursor is on any polyline end point (including internal
  709.             points).
  710.  
  711. The picked object will blink. SELECT key will select it, ABORT key  will cause the next
  712. object, if such exists at this position, to blink  until one is selected via the SELECT
  713. key, or no more objects can be  picked.
  714.  
  715. If no object at all is found at the cursor point, the point is used  as first corner of a
  716. box to pick a set of objects - a second SELECT  key will pick the second corner of the
  717. box, ABORT key will abort this  mode. All objects intersect with the defined box, will
  718. be considered  picked, with no more verification.
  719.  
  720.  ModifyMove       -    Picks object(s), and moves it (them) to a new position. Once
  721.                        the object(s) is (are) picked, SELECT key will set its(their) new
  722.                        position, ABORT will leave it unchanged.
  723.  ModifyCopy       -    Picks object(s), and copies it (them) to a new position. Once
  724.                        the object(s) is (are) picked, SELECT key will place it(them) in
  725.                        new position, ABORT will abort the copy operation.
  726.  EditLibItem      -    if the picked object(s) is a single library item, allows editing
  727.                        any of the following (via a pop up menu):
  728.       A.    Editing the part name. This is the only way to add a part  name to a
  729.             library item if the library item has none by  default.
  730.       B.    Toggle to Draw/Undraw chip name (if this chip is allowed  to have one).
  731.       C.    Reposition Chip name (if this chip have one).
  732.       D.    Reposition Part name (if this chip is allowed to have one).
  733.       E.    Reorient the lib part.
  734.       Picking one of the above via SELECT will allow text positioning or text editing
  735.       (via String question). ABORT or selecting Done (first menu entry) will abort this
  736.       EditLibItem mode.
  737.  ModifyDelete     -    Deletes the picked object(s). The deleted object(s) is (are)
  738.                        saved in a special 10 places deep stack, and deleted items can
  739.                        be undeleted using the ModifyUnDel function. Each of the 10
  740.                        placed stack can hold any result of a pick no matter how many
  741.                        objects are inside. This Delete/Undelete mechanism can be
  742.                        used to cut and paste even between different files/windows -
  743.                        this stack is never being cleared.
  744.  ModifyUnDel      -    Undelete the last delete operation (see ModifyDelete), from the
  745.                        delete stack (LIFO).
  746.  
  747.  ModifyCut        -    Same as ModifyDelete, but original is NOT deleted. The object
  748.                        is being pushed onto the undelete stack and can then be
  749.                        ModifyUnDel, ModifyPaste etc.
  750.  ModifyPaste      -    Same as ModifyUnDel, but the undelete stack is NOT modified.
  751.                        This function enables pasting and placing the same object few
  752.                        times.
  753.  ModifyDrop       -    Drops the top of stack from the undelete stack. May be used
  754.                        to drop a cut/paste object sequence from stack.
  755.  
  756. G. Status menu:
  757.  Help                  -     Pops up an help window and displays the content of
  758.                              eedraw.hlp. If the help window is already popped up,
  759.                              this function will close it (acts like a toggle.).
  760.  GetMemoryFree         -     Prompts with a continue question, on the current free
  761.                              memory. Getting close to zero is unsafe!
  762.  GetZoomFactor         -     Allows you to see the current zoom factor
  763.  SetDrawText           -     Sets drawing of text smaller than minimal size (8x8).
  764.                              This will draw text at 8x8 size which is too big, but may
  765.                              be sometimes useful.
  766.  SetTextSize           -     Sets the scaling (up only) of the text size. By default this
  767.                              is equal to 1, but scaling up by 7 is allowed. 
  768.  SetAutoPan            -     If TRUE, auto panning will occur when placing objects
  769.                              that have been moved off the active WINDOW. The
  770.                              object will be place so it is centered in the window.
  771.  SetHVLines            -     Allows drawing of diagonal lines as well if set to FALSE.
  772.                              Uses Yes/No question.
  773.  SetSnapFactor         -     Sets the invisible grid the cursor position is snapped to.
  774.                              You probably do not want to change this, especially not
  775.                              in the middle of file editing. Uses String question, and
  776.                              display current Snap factor to begin with.
  777.  SetLineWidth          -     Sets the current line width, at the moment there is only
  778.                              widths '1' and '3' available, this should change in the
  779.                              next release.
  780.  
  781. H. Other (not in any menu):
  782.  SameAgain        -    Executes the last function again. This is hard bounded to
  783.                        MIDDLE key, although in may be bounded to another key as
  784.                        well.
  785.  
  786. 5. Spacial Notes
  787.  
  788.  
  789. Designing using A4 page size does not require much memory even when few libraries
  790. are loaded. My system with 640k (-70k of the O.S) has almost 300k free to use (Use
  791. the GetMemoryFree function to query free memory), when all the provided libraries
  792. are loaded. I guess you will need to work hard to get down to less than 100k. If you
  793. succeed and/or you system has less than 640k memory, make yourself a rule: never
  794. to go below 64k of free memory. The program need about 32k of temporary memory
  795. for the different operations, and getting close to that is dangerous! When you
  796. approach 32k of free memory, you will be issued a warning (Continue question):  Free
  797. memory too small - dangerous to continue.  Every 30 second (if you do any operation
  798. in that time). Continuing at this point may result with loss of all your work - the
  799. program will exit when no more memory will be available! This is especially true if
  800. 'SaveBackMethod' in eedraw.cfg is set to conventional memory.  Yes, I know this is
  801. ugly, but you eat what you cook, right? I used this program quite a bit, and never
  802. succeeded to go below 200k, so why bather.
  803.  
  804. 6. Acknowledgement
  805.  
  806.  
  807. I would like to thank skh@eng.sun.com (Steve Howell) for his great comments during
  808. the last stages of bringing version 2.0 up.
  809.  
  810. Appendix A. Glossary
  811.  
  812.  
  813. SELECT Key        -    The key used for the select operation. Currently hard-bound
  814.                        to  Enter (or Return), the Left mouse button if mouse exists,
  815.                        and to  Button 1 in a joystick.
  816.  
  817. ABORT Key         -    The key used for the abort operation. Currently hard-bound to 
  818.                        Space bar, the Right mouse button if mouse exists and to
  819.                        Button 2  in a joystick.
  820.  
  821. MIDDLE key        -    Another general purpose key. Currently hard-bound to  Tab
  822.                        key, the Middle mouse button if mouse exists and has middle 
  823.                        button (or both right and left buttons pressed simultaneously) 
  824.                        and to both Buttons of the joystick.
  825.  
  826. Screen Space      -    the space of the display device. Depends on the graphic 
  827.                        device coordinates on the selected mode.
  828.  
  829. Drawing Space     -    the space in which the drawing objects exist. This space  is
  830.                        bounded by a wide box (zoom out twice to see this box on an 
  831.                        empty drawing) so it will fit into an A4 (8.5" by 11") page in
  832.                        both  the EPSON and the PostScript printer drivers (see
  833.                        Appendix B).
  834.  
  835.  
  836. Appendix B. Printer drivers and general support tools
  837.  
  838.  
  839. The following printer drivers are available (see also installation section):
  840.  
  841. 1. EPSON printer.
  842.  
  843.  Usage: EEDEpson [-g] [-r] [-1] [-2] [-3] [-d] [-z] FileName[.EED]
  844.  
  845.  Options:   [-g] Output goes to standard output as 1 bit per pixel (B&W) GIF file.
  846.             [-r] Output goes to standard output as raw data.
  847.             [-1], [-2], [-3] Output goes to LPT1:, LPT2:, LPT3: respectively.
  848.             [-d] If output goes to Epson printer - print in double the density.
  849.             [-z] Print version number and usage.
  850.  
  851.       * if neither [-g], not [-r] are specified, output is in Epson compatible format
  852.       (default).
  853.       * If non of [-1], [-2], [-3] are specified, output goes to standard output.
  854.       * [-1], [-2], [-3], [-d] are ignored if [-g] or [-r] are specified.
  855.  
  856.  
  857.  
  858.  
  859. 2. PostScript Printer.
  860.  
  861.  Usage: EED-PS [-f FontName] [-z] FileName[.EED]
  862.  
  863.  Options:   [-z] Print version number and usage.
  864.             [-f FontName] Specify the font name to use instead of the default name
  865.             (Times-Roman).
  866.  
  867.  PostScript output goes to stdout. If a PostScript Printer is connected to com2: serial
  868. port then 'eed-ps drawing.eed > com2:' will print drawing.eed on that printer.
  869.  
  870. 3. Converter.
  871.  
  872.  Usage: CONV [-l] FileName.EXT
  873.  
  874.  Options:   [-l] Convert the old style library files into version 2.4 files, 
  875.  
  876.  This program is used to convert old style data files into the version  2.4 format,
  877. adding layer information where needed. The layers are  selected on a best guess basis,
  878. hence the user may need to edit the   data files to change the default information. 
  879. Unlike other EEDraw programs the entire filename plus extension needs  to be passed
  880. into the convertor program, as it can take in both '.EED'  files and '.LIB' files. The
  881. convertor is called automatically from the  LoadEEDFile menu item when an old style
  882. file is called.
  883.  
  884. Appendix C. Library file format
  885.  
  886.  
  887. This appendix describes the format of the library file. It contains all the information
  888. required to create your own libraries. The libraries are designed to be parametric only.
  889. I.e. no bitmaps are supported. You can look at the given libraries while reading this
  890. appendix for better understanding.
  891.  
  892. Empty lines and lines that starts with '#' are ignored. In order to identify a library as
  893. such the first line must start with 'EEDRAW-LIB'. Following in the same line is version
  894. number as 'Version X.X'. Currently 'X.X' equal '1.0' and is ignored. However it may
  895. be used in future versions, to ensure backward compatibility. Following are the parts
  896. themselves. Each part definition begins as follows:
  897.  
  898. DEF Name Prefix #Pins TextInside DrawNum #Units #PinsPerUnit
  899.  
  900. Were
  901.       1.    Name is the Part name, i.e. "74LS00". If Name is prefixed with "~" (for
  902.             example "~74LS00") then the name is not drawn, nor it will be accessible
  903.             to editing by the user.
  904.       2.    Prefix is the prefix to be used in chip name (IC, R, C etc.). If prefix is "~",
  905.             then no prefix is drawn.
  906.       3.    #Pins is the same as number of entries in PINS (see below), i.e 14 for
  907.             74LS00.
  908.       4.    TextInside is 0 if pin text is to be put outside as well (as the pin numbers
  909.             are), otherwise inside. You may put any positive integer there to scale the
  910.             distance inside. 10 is a good start.
  911.       5.    DrawNum is 1 if pin numbers are to be drawn, 0 otherwise.
  912.       6.    #Units holds number of multiple entries. For example 74LS00 has 4 units
  913.             (Nand gates). For no multiple units put 0 here.
  914.       7.    #PinsPerUnit holds number of entries for one unit if more than one unit
  915.             per part. If #Units is 0, it is ignored.
  916.  
  917. The part definition follows by the following blocks, in any order:
  918.  
  919.  
  920.  
  921.  
  922. 1. DRAW/ENDDRAW        -     defines how to draw the part. This block is optional, and 
  923.                              a simple box with half the pins on each side is drawn if
  924.                              this block is  not defined. The following commands are
  925.                              supported:
  926.  
  927.       A Ly x y r t1 t2 (Define ARC at x, y, radius r, angles t1 to t2)
  928.       P Ly n x y x y x y... [F] (Define a POLYLINE of (any) length n)
  929.       C Ly x y r (Define a CIRCLE at x, y, radius r)
  930.       S Ly x1 y1 x2 y2 (Define a square (Not filled))
  931.       T Ly x y h str (Define a text string at x, y (see below))
  932.       L Ly x1 y1 x2 y2 [I] (Define terminal line to part - see PINS)
  933.  
  934.       Notes:
  935.       A.    a text string (T) with be drawn horizontally if h is 1, vertically if 0. Also '~'
  936.             characters will be replaced by spaces, or this provides a mechanism to
  937.             have spaces in the string.
  938.       B.    If the polyline (P) is postfixed by a F, the polyline should define a closed
  939.             shape that will be filled. The first point of the polyline must be identical
  940.             to last one in this case.
  941.       C.    If the line (L) is postfixed by an I, this line is assumed to define negative
  942.             logic, and a small circle will be drawn to express that.
  943.       D.    The number of L definitions should be exactly the same as #Pins in the
  944.             DEFS line if #Units = 0, and equal #PinsPerUnit if #Units != 0. The order
  945.             will match to the order in the PINS/ENDPINS block if #Units = 0 and to
  946.             the order in the MULTI/ENDMULTI if #Units != 0.
  947.       E.    Arcs (A) should not exceed 180 degrees, are CCW, and 0 degrees is at 3
  948.             o'clock.
  949.       F.    The 'Ly' (Second field on each line) is the layer designation field, Later in
  950.             the appendix is the description of what each layer does.
  951.  
  952. 2. PINS/ENDPINS        -     defines the names (strings) associated with each pin.
  953.                              This  block must always exists, and it is the minimum
  954.                              required to define a part.  The block holds #Pins lines
  955.                              each hold the string defines that pin. This  order must
  956.                              be the same as define in the DRAW/ENDDRAW as L
  957.                              commands  (if DRAW/ENDDRAW block is defined), from
  958.                              pin 1 to #Pins. Empty lines  are allowed and defined
  959.                              with only '~' in them. Not sign for X (vertical bar  above
  960.                              it) is defined by ~X.
  961.  
  962. 3. MULTI/ENDMULTI      -     This block must exists if #Unit != 0. Each line in this 
  963.                              provides a mapping from L terminal definitions in the
  964.                              DRAW/ENDDRAW block  to the pin numbers in a multi
  965.                              unit part. This is required as same L  terminal will have
  966.                              different pin number in different Units.  Each line in
  967.                              this block holds the pin numbers of a unit.  Number of
  968.                              lines should be equal to number units in part.
  969.  
  970. Part definition terminates with the ENDDEF line.
  971.  
  972. General Notes:
  973.  
  974.       1.    All parts are scaled up to easy the access of a single pin (by 16, but you 
  975.             should not wonder about it too much - its internal mapping to drawing
  976.             space).
  977.       2.    Library file can hold any number of parts (at least one though...).
  978.       3.    Library file must have '.lib' extension, to be usable by the EED* programs.
  979.  
  980.  
  981.  
  982. Appendix D Layers.
  983.  
  984.  
  985. Following is a description of what each of the primary system layers is  used for, In
  986. the current version of the library files layers like the IEEE layer are never used, it is
  987. a good idea for the user to stick to the basic layer conversion when creating new
  988. symbols for the libraries as some of the layers are called automatically by layer
  989. number in the program, hence there is no way for the user to change there position
  990. in the table. A good example of this is the 'Wire' layer, Layer '0', called by layer
  991. number in the 'DrawWire' menu entry. All of the layer table is saved in the '.EED' data
  992. file, so any new layers added, or the status of existing layers, is saved when the data
  993. file is saved.
  994.  
  995.  Wire       -     Basic wire interconnections
  996.  Bus        -     Buses (Groups of wires)
  997.  Gate       -     Basic outline of a device
  998.  IEEE       -     IEEE device outlines, (Not yet in libraries)
  999.  PinFun     -     Function attached to a particular device pin
  1000.  PinNum     -     Pin Number on a device
  1001.  PinNam     -     Name attached to a pin on a device
  1002.  RefDes     -     Reference designator for a component
  1003.  Attr       -     Attribute to be attached to a component
  1004.  Device     -     Device type/name
  1005.  Notes      -     User notes etc
  1006.  NetNam     -     Wiring net name layer, needs changes to 'SaveNetList'
  1007.  Pin        -     Device Pins/Connection Points
  1008.  
  1009. The layers are numbered from zero (Wire) to Twelve (Pin), when described in the
  1010. database files and library files. 
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087. Gershon Elber + Peter Cooper
  1088. Email: gershon@cs.utah.edu pcc@uk.ac.york.minster
  1089.  
  1090.